﻿using System.ComponentModel;
using System.Windows.Data;
using Microsoft.Practices.Prism.Events;
using Microsoft.Practices.Prism.Regions;
using Tanmia.Basis.Prism;
using Tanmia.Basis.ViewInterface;
using Tanmia.Basis.ViewModel;
using Tanmia.Warehouse.Core;
using Tanmia.Warehouse.Domain;

namespace Tanmia.Warehouse.Presentation.Scenarios
{
    [ViewInfo("تحرير مميزات المواد", "يمكن للمادة أن تحتوي على العديد من المميزات المسبقة التعريف كالألوان مثلاً حيث تكون المادة بنفس الأسم والسعر ولكن يوجد منها عدة ألوان, لذلك يتم تعريف هذه المميزات بشكل مسبق ومن ثم تعريف مادة تتحرك في المستودع بالإعتماد على المميزات وتحديد تلك المميزات التي تعرف في هذه الشاشة.", Constants.RegionEditor, Views.DiscriminatorEditor)]
    public class DiscriminatorEditorViewModel : EditorViewModel<Discriminator>
    {
        public ICollectionView ParentDiscriminators { get; private set; }

        public DiscriminatorDomain DiscriminatorObj
        {
            get { return EntityObj as DiscriminatorDomain; }
        }

        public DiscriminatorEditorViewModel(IShellView shellView, IRegionManager regionManager, IEventAggregator eventAggregator, IBusinessEntityNavigator<Discriminator> entityNavigator, IMessageService messageService, DiscriminatorDomain discriminatorObj)
            : base(shellView, regionManager, eventAggregator, entityNavigator, messageService, discriminatorObj)
        {
            EntityName = "Discriminator";
        }

        private void FillParentDiscriminators()
        {
            ParentDiscriminators = Entity == null || Entity.IsEmpty ?
                CollectionViewSource.GetDefaultView(DiscriminatorObj.GetsWithHead()) :
                CollectionViewSource.GetDefaultView(DiscriminatorObj.GetsParentWithHead(Entity));

            RaisePropertyChanged(() => ParentDiscriminators);
        }

        protected override void OnPostShow(NavigationContext navigationContext)
        {
            base.OnPostShow(navigationContext);

            FillParentDiscriminators();

            Discriminator parntParam = navigationContext.GetParameter<Discriminator>(Constants.ParentEntityParam);
            if (parntParam != null)
                ParentDiscriminators.MoveCurrentTo(parntParam);
        }
    }
}
